package metier;

import java.util.Date;

import main.Commande;

public class Stock {

	private static Stock stock;

	private static int date_debut = 20110101;

	private double sel;
	public double getSel() { return sel; }
	public void setSel(double sel) { this.sel = sel; }

	private double ail;
	public double getAil() { return ail; }
	public void setAil(double ail) { this.ail = ail; }

	private double epices;
	public double getEpices() { return epices; }
	public void setEpices(double epices) { this.epices = epices; }

	private double noix;
	public double getNoix() { return noix; }
	public void setNoix(double noix) { this.noix = noix; }

	private int sauc_sec;
	public int getSauc_sec() { return sauc_sec; }
	public void setSauc_sec(int saucSec) { sauc_sec = saucSec; }

	private int sauc_sec_noix;
	public int getSauc_sec_noix() { return sauc_sec_noix; }
	public void setSauc_sec_noix(int saucSecNoix) { sauc_sec_noix = saucSecNoix; }
	
	private int vente_sauc_sec;
	public int getVente_sauc_sec() { return vente_sauc_sec; }
	public void setVente_sauc_sec(int venteSaucSec) { vente_sauc_sec = venteSaucSec; }	
	
	private int vente_sauc_noix;
	public int getVente_sauc_noix() { return vente_sauc_noix; }
	public void setVente_sauc_noix(int venteSaucNoix) { vente_sauc_noix = venteSaucNoix; }

	//#TODO sechage
	private int sauc_sec_sechage;
	private int sauc_sec_noix_sechage;

	private int date_crea;

	/**
	 * Initialisation du stock à 0
	 */

	public static Stock getInstance() {
		if (stock == null)
			stock = new Stock(5000, 5000, 5000, 5000, 23000, 5000, date_debut);

		return stock;
	}
	
	public static void delInstance(){
		stock = null;
	}

	public Stock() {

		this.sel = 0;
		this.ail = 0;
		this.epices = 0;
		this.noix = 0;
		this.sauc_sec = 0;
		this.sauc_sec_noix = 0;
		this.date_crea = 0;
	}

	/**
	 * Initialisation du stock selon les paramètres entrés
	 * 
	 * @param sel
	 *            en grammes
	 * @param ail
	 *            en grammes
	 * @param epices
	 *            en grammes
	 * @param noix
	 *            en grammes
	 * @param sauc_sec
	 *            en unité
	 * @param sauc_sec_noix
	 *            en unité
	 */
	private Stock(double sel, double ail, double epices, double noix,
			int sauc_sec, int sauc_sec_noix, int date_crea) {
		this.sel = sel;
		this.ail = ail;
		this.epices = epices;
		this.noix = noix;
		this.sauc_sec = sauc_sec;
		this.sauc_sec_noix = sauc_sec_noix;
		this.date_crea = date_crea;
		this.vente_sauc_noix = 0;
		this.vente_sauc_sec = 0;
	}

	/**
	 * Fonction d'affichage du stock actuel
	 */
	public void affichage_stock(Date date) {
		System.out.println("\n");
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Etat du stock.");
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Etat du stock des matières premières");
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Sel : " + this.sel);
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Ail : " + this.ail);
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Epices : " + this.epices);
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Noix : " + this.noix);
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Etat du stock des saucissons");
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Saucissons sec : " + this.sauc_sec);
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Saucissons sec aux noix : " + this.sauc_sec_noix);
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Etat des ventes");
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Saucissons sec  : " + this.vente_sauc_sec);
		System.out.println(date.getDate() + "/" + date.getMonth() + "/" + date.getYear() +  " : Saucissons sec aux noix : " + this.vente_sauc_noix);
		
		
		/*
		System.out.println("\n ** Stock au " + date.getDate() + "/"
				+ date.getMonth() + "/" + date.getYear());
		System.out.println(" ** Etat du stock des matières premières ** ");
		System.out.println(" Sel : " + this.sel);
		System.out.println(" Ail : " + this.ail);
		System.out.println(" Epices : " + this.epices);
		System.out.println(" Noix : " + this.noix);
		System.out.println("\n** Etat du stock des saucissons ** ");
		System.out.println(" Saucissons sec : " + this.sauc_sec);
		System.out.println(" Saucissons sec aux noix : " + this.sauc_sec_noix);
		*/
	}

	public boolean check_stock(Date dateFinProd)
	{
		if (this.sel < 121) {
			if (Commande.getInstance().getCommande_sel() == null)
			{
				Commande.getInstance().setCommande_sel((Date) dateFinProd.clone());
				System.out.println(dateFinProd.getDate() +"/"+ dateFinProd.getMonth() +"/"+ dateFinProd.getYear() + " : Commande de sel lancée.");
			}
		} 
		if (this.ail < 536) 
		{
			if (Commande.getInstance().getCommande_ail() == null)
			{
				Commande.getInstance().setCommande_ail((Date) dateFinProd.clone());
				System.out.println(dateFinProd.getDate() +"/"+ dateFinProd.getMonth() +"/"+ dateFinProd.getYear() + " : Commande d'ail lancée");
			}
		}
		if (this.epices < 108) 
		{
			if (Commande.getInstance().getCommande_epices() == null)
			{
				Commande.getInstance().setCommande_epices((Date) dateFinProd.clone());
				System.out.println(dateFinProd.getDate() +"/"+ dateFinProd.getMonth() +"/"+ dateFinProd.getYear() + " : Commande d'epices lancée");
			}
		} 
		if (this.noix < 2688) 
		{
			if (Commande.getInstance().getCommande_noix() == null)
			{
				Commande.getInstance().setCommande_noix((Date) dateFinProd.clone());
				System.out.println(dateFinProd.getDate() +"/"+ dateFinProd.getMonth() +"/"+ dateFinProd.getYear() + " : Commande de noix lancée");
			}
		}
		
		return false;
	}
	
	public void display_date_commande()
	{
		if (Commande.getInstance().getCommande_ail() != null)
			System.out.println("Date de la commande de l'ail : " + Commande.getInstance().getCommande_ail().getDate() + "/" + Commande.getInstance().getCommande_ail().getMonth() + "/" + Commande.getInstance().getCommande_ail().getYear());
		
		if (Commande.getInstance().getCommande_sel() != null)
			System.out.println("Date de la commande de sel : " + Commande.getInstance().getCommande_sel().getDate() + "/" + Commande.getInstance().getCommande_sel().getMonth() + "/" + Commande.getInstance().getCommande_sel().getYear());
		
		if (Commande.getInstance().getCommande_epices() != null)
			System.out.println("Date de la commande d'epices : " + Commande.getInstance().getCommande_epices().getDate() + "/" + Commande.getInstance().getCommande_epices().getMonth() + "/" + Commande.getInstance().getCommande_epices().getYear());
		
		if (Commande.getInstance().getCommande_noix() != null)
			System.out.println("Date de la commande de noix : " + Commande.getInstance().getCommande_noix().getDate() + "/" + Commande.getInstance().getCommande_noix().getMonth() + "/" + Commande.getInstance().getCommande_noix().getYear());
	}
}
